// [1, K] 范围内的数字中，每个位的数字之和整除 D 的数有几个
// 测试链接：https://atcoder.jp/contests/dp/tasks/dp_s

#include <bits/stdc++.h>

using namespace std;

const int MOD = 1e9 + 7;

int cnt(string& s, int D)
{
    int m = s.size();
    int dp[m][101];
    memset(dp, -1, sizeof dp);
    function<int(int, int, bool)> f = [&](int i, int sum, bool is_limit) -> int
    {
        if(i == m) return sum % D == 0;
        if(!is_limit && dp[i][sum] != -1) return dp[i][sum];
        int up = is_limit ? s[i] - '0' : 9;
        int ans = 0;
        for(int d = 0; d <= up; ++d)
        {
            // 不理解的话看一下，讲解041-同余原理
            ans = (ans + f(i + 1, (sum + d) % D, is_limit && d == up)) % MOD;
        }
        if(!is_limit) dp[i][sum] = ans;
        return ans;
    };

    // 要减去 0 这个数字
    return (f(0, 0, true) - 1 + MOD) % MOD;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    string K;
    int D;
    cin >> K >> D;
    printf("%d\n", cnt(K, D));

    return 0;
}